package cn.ljy.mes.service;

import cn.ljy.authority.service.BaseService;
import cn.ljy.mes.model.MesProductionOrderStep;
import cn.ljy.mes.model.query.MesProductionOrderStepQuery;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

public interface MesProductionOrderStepService extends BaseService<MesProductionOrderStep, MesProductionOrderStepQuery> {
    /**
     * 审核生产订单的步骤完成情况
     * 说明：
     * （1）订单状态不能在update直接修改；
     * （2）如果是生产步骤最后一步，审核通过后，生产订单变为完成状态。
     * @param orderStepId 生产步骤ID
     * @param auditResult 审核结果
     * @param auditNote 审核意见，可以为空
     */
    void auditStep(@NotBlank(message = "订单步骤ID不能为空") String orderStepId,
                   @NotNull(message = "审核结果不能为空") Boolean auditResult,
                   String auditNote);

    /**
     *将生产订单的指定步骤改为生产中
     * 说明：
     * 1.只有处于就绪状态或审核不通过的状态才能修改。
     * 2.如果是审核不通过的状态，则需要先清空原来已经使用的物料批次信息及使用数量，并将物料返回存库（当前业务设定，仓库为线边库）
     */
    void updateStepStatusToInProgress(@NotBlank(message = "订单步骤ID不能为空") String orderStepId);



}
